package org.ee.core.util;


import java.io.*;
import java.nio.file.*;
import java.util.*;

/**
 * 文件工具类
 */
public class FileUtil {

    // 读取文件内容为字符串
    public static String readFileToString(File file) throws IOException {
        if (file == null || !file.exists()) {
            return null;
        }
        return new String(Files.readAllBytes(file.toPath()));
    }

    // 将字符串写入文件
    public static void writeStringToFile(File file, String content) throws IOException {
        if (file == null || content == null) {
            return;
        }
        Files.write(file.toPath(), content.getBytes());
    }

    // 获取文件的扩展名
    public static String getFileExtension(File file) {
        if (file == null || !file.exists()) {
            return null;
        }
        String fileName = file.getName();
        int dotIndex = fileName.lastIndexOf('.');
        return dotIndex == -1 ? "" : fileName.substring(dotIndex + 1);
    }

    // 判断文件是否存在
    public static boolean exists(File file) {
        return file != null && file.exists();
    }

    // 创建目录（如果不存在）
    public static boolean createDirectory(File dir) {
        if (dir == null) {
            return false;
        }
        return dir.exists() || dir.mkdirs();
    }

    // 拷贝文件
    public static void copyFile(File source, File destination) throws IOException {
        if (source == null || destination == null) {
            return;
        }
        Files.copy(source.toPath(), destination.toPath(), StandardCopyOption.REPLACE_EXISTING);
    }

    // 删除文件
    public static boolean deleteFile(File file) {
        if (file == null || !file.exists()) {
            return false;
        }
        return file.delete();
    }

    // 列出目录中的所有文件
    public static List<File> listFiles(File dir) {
        if (dir == null || !dir.exists() || !dir.isDirectory()) {
            return Collections.emptyList();
        }
        return Arrays.asList(Objects.requireNonNull(dir.listFiles()));
    }
}
